# -*- coding: utf-8 -*-
import oss2
from django.conf import settings

# 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
auth = oss2.Auth(settings.ALI_ACCESSKEY_ID, settings.ALI_ACCESSKEY_SECRET)
# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东2（北京）为例，Endpoint填写为
# https://oss-cn-beijing.aliyuncs.com。  https://oss-cn-shanghai.aliyuncs.com
endpoint = 'https://oss-cn-shanghai.aliyuncs.com'
# endpoint = settings.ALI_ENDPOINT

def create_bucket(bucket):

    # 通过指定Endpoint和存储空间名称，您可以在指定的地域创建新的存储空间。Endpoint以杭州为例，其它Region请按实际情况填写。
    bucket = oss2.Bucket(auth, endpoint, bucket)
    # 创建存储空间。
    # 如果需要在创建存储空间时设置存储类型、存储空间访问权限、数据容灾类型，请参考以下代码。
    # 以下以配置存储空间为标准存储类型，访问权限为私有，数据容灾类型为同城冗余存储为例。
    # bucketConfig = oss2.models.BucketCreateConfig(oss2.BUCKET_STORAGE_CLASS_STANDARD, oss2.BUCKET_DATA_REDUNDANCY_TYPE_ZRS)
    # bucket.create_bucket(oss2.BUCKET_ACL_PRIVATE, bucketConfig)
    result = bucket.create_bucket()
    return result

def delete_bucket(bucket):
    bucket = oss2.Bucket(auth, endpoint, bucket)
    try:
        # 删除存储空间。
        bucket.delete_bucket()
    except oss2.exceptions.BucketNotEmpty:
        print('请先清除存储空间下的所有文件和碎片')
    except oss2.exceptions.NoSuchBucket:
        print('存储空间不存在')

def upload_file(bucket,file_name, file_path):
    """
    向阿里云oss上传文件
    :return:
    """
    # 填写Bucket名称。
    bucket = oss2.Bucket(auth, endpoint, bucket)
    headers = {
        'Content-Type': 'application/octet-stream',
        'x-oss-object-acl': 'public-read'
    }
    # 填写Object完整路径和本地文件的完整路径。Object完整路径中不能包含Bucket名称。
    # 如果未指定本地路径，则默认从示例程序所属项目对应本地路径中上传文件。
    result = bucket.put_object_from_file(file_name, file_path, headers)
    return result

def delete_file(bucket,filename):
    bucket = oss2.Bucket(auth, endpoint, bucket)
    # 删除文件。<yourObjectName>表示删除OSS文件时需要指定包含文件后缀在内的完整路径，例如abc/efg/123.jpg。
    # 如需删除文件夹，请将<yourObjectName>设置为对应的文件夹名称。如果文件夹非空，则需要将文件夹下的所有object删除后才能删除该文件夹。
    bucket.delete_object(filename)

def delete_file_list(bucket,file_list):
    bucket = oss2.Bucket(auth, endpoint, bucket)
    # 批量删除多个个文件。每次最多删除1000个文件。
    result = bucket.batch_delete_objects(file_list)
    # 打印成功删除的文件名。
    print('\n'.join(result.deleted_keys))
# bucket = create_bucket('1778563')
# print(bucket)
#
# # result=upload_file(bucket.name,'code.png',r'D:\Workspace_Django\bugmanage\scripts\code.png')
# # print(result)




